Passed
Pull Request — master (#2)
by André
01:31
created

out.js ➔ ... ➔ ???   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 1
eloc 11
c 3
b 0
f 0
nc 1
dl 0
loc 4
rs 9.85
nop 2
1
'use strict'
2
3
module.exports = (input, callback) => {
4
	const mqtt = require('mqtt')
5
	const configuration = require('./configuration')
6
	const validate = require('./validate')
7
	let error = null
8
	let output = null
9
	let receivedMessage
0 ignored issues
show
Unused Code introduced by
The variable receivedMessage seems to be never used. Consider removing it.
Loading history...
10
11
	validate.sourceConfiguration(input, (validatedInput, thrownError) => {
12
		input = validatedInput
13
		error = thrownError
14
	})
15
	validate.paramConfiguration(input, (validatedInput, thrownError) => {
16
		input = validatedInput
17
		error = thrownError
18
	})
19
20
	// Send MQTT
21
	if ( !error ) {
22
		let configurationMqtt = configuration.mqtt(input)
23
		let client = mqtt.connect(input.source.url, configurationMqtt)
24
25
		client.on('connect', () => {
26
			client.subscribe(input.source.topic, (errorConnection) => {
27
				if ( !errorConnection ) {
28
					client.publish(input.source.topic, input.params.payload, {
29
						qos: input.params.qos,
30
						retain: false
31
					})
32
				} else {
33
					error = errorConnection
34
				}
35
			})
36
		})
37
38
		client.on('message', (topic, message) => {
39
			output = {
40
				'version': {'ref': 'output'},
41
				'metadata': [
42
					{'name': 'message', 'value': input.params.payload.toString()},
43
					{'name': 'receivedMessage', 'value': message.toString()},
44
					{'name': 'qos', 'value': input.params.qos.toString()},
45
					{'name': 'timestamp', 'value': Date.now().toString()},
46
					{'name': 'topic', 'value': topic}
47
				]
48
			}
49
			client.end()
50
			callback(error, output)
51
		})
52
53
	}
54
}
55